Kubernetes 1.31: las estabilizaciones clave de agosto

Engranajes azules metálicos interconectados representando orquestación Kubernetes

Kubernetes 1.31 salió el 13 de agosto de 2024. Release calmada — sin features revolucionarias pero con varias estabilizaciones importantes: AppArmor GA, sidecar containers stable, Dynamic Resource Allocation (DRA) beta. Este artículo cubre qué vale la pena upgradear.

Features estables nuevas (GA)

AppArmor support

AppArmor profile via pod spec nativo:

apiVersion: v1
kind: Pod
spec:
  securityContext:
    appArmorProfile:
      type: Localhost
      localhostProfile: custom-profile

Antes era via annotations (legacy). Ahora API field. Mejora compliance workflows.

Sidecar containers

initContainers con restartPolicy: Always son sidecars de verdad:

spec:
  initContainers:
  - name: proxy
    image: envoy:1.30
    restartPolicy: Always  # — lo hace sidecar real

Se ejecutan antes del main container, restart if fail, terminate cuando main termina. Soluciona problemas clásicos de service mesh sidecars.

Kube-proxy mejoras

  • nftables mode más estable (beta).
  • Performance mejorado en servicios masivos.

Para clusters grandes con muchos services, migración eventual a nftables kube-proxy es path.

Features beta nuevas

Dynamic Resource Allocation (DRA)

Alternativa moderna a device plugins para GPUs, FPGAs, etc:

spec:
  resourceClaims:
  - name: gpu
    resourceClaimName: my-gpu-claim

Permite sharing de recursos especializados de forma más flexible. Para AI workloads multi-tenant, crítico.

Memory manager

Static memory manager permite NUMA-aware scheduling.

Contextual logging

Logs estructurados con contexto automático — rastreo más fácil.

Removed / Deprecated

  • cephfs in-tree driver removed (usar CSI driver).
  • cephrbd in-tree driver removed.
  • gce_pd in-tree deprecated.

Si usas Ceph o GCE PD in-tree: migrar CSI antes de upgrade.

Seguridad

Mejoras:

  • ValidatingAdmissionPolicy GA (desde 1.30).
  • Podman Pod Security Admission refinements.
  • ReadOnly filesystem features stabilising.

Cluster admins tienen más tools nativos para security.

Scheduler improvements

  • Fewer pods pending en clusters grandes.
  • Better preemption decisions.
  • Priority-and-fairness throughput improvements.

Para clusters con miles de pods, performance notable.

Upgrade path

Desde 1.29 o 1.30:

# Check deprecation warnings
kubectl get events -A | grep -i deprecat

# Upgrade control plane
kubeadm upgrade plan 1.31.0
kubeadm upgrade apply v1.31.0

# Upgrade kubelet node by node
# ... (rolling)

Patterns habituales. Nada disruptivo salvo removed drivers.

Component changes

  • Kubelet: TLS bootstrap simplifications.
  • containerd 2.0 compatibility verified.
  • CRI-O 1.31 compatible.
  • etcd 3.5 still default.

Para kernel: 5.10+ recomendado para eBPF features modernas.

Performance

Benchmarks preliminares:

  • Scheduler: 5-10% throughput improvement.
  • API server: similar.
  • Storage: CSI improvements en specific drivers.

Cambios incrementales pero acumulativos.

Ecosystem adaptation

  • EKS: 1.31 available a few months tras upstream.
  • GKE: similar pace.
  • AKS: similar.
  • kops, kubeadm: día 1.
  • Rancher, Anthos: versions later.

Self-managed siempre adelantado.

Para administradores

Checklist upgrade:

Sidecar real: el gamechanger

El restartPolicy: Always en initContainer es más importante de lo que parece:

Before: service mesh sidecars “hacks” con shareProcessNamespace, workarounds para shutdown order.

Now: sidecars oficialmente supported con lifecycle correcto. Inicia antes del main, termina después, restart independiente si falla.

Istio, Linkerd, y CrowdSec beneficiation directly.

Ecosistema que ya usa esto

  • Istio: soporte nativo sidecar native lifecycle en 1.23+.
  • Linkerd: adoptando.
  • Vector logs collector: sidecar pattern mejorado.
  • OpenTelemetry collector: similar.

Effect: cleaner pod restarts, menos issues shutdown order.

Roadmap 1.32+

Expectativas:

  • DRA stabilization: Q4 2024 / Q1 2025.
  • Seccomp profile defaulting improvements.
  • Control plane HA refinements.
  • KEP 3635: Pod-level resources.

Conclusión

K8s 1.31 es release iterativa sin drama. Features GA (AppArmor, sidecar containers) son improvements significativos en áreas donde K8s tenía gaps. DRA beta es dirección importante para AI workloads. Para clusters productivos, upgrade es seguro siguiendo checklist estándar. Para orgs en 1.28 o antes, acelerar upgrades — cada versión se aleja más y el gap hace migration más costosa.

Síguenos en jacar.es para más sobre Kubernetes, containers y cloud-native.

Entradas relacionadas